`json_encode` y `json_decode` son dos funciones esenciales en PHP que permiten trabajar con datos en formato JSON (JavaScript Object Notation). JSON es un formato ligero de intercambio de datos que es fácil de leer y escribir para los humanos y fácil de analizar y generar para las máquinas. Es ampliamente utilizado para la transmisión de datos en aplicaciones web, particularmente entre un servidor y un cliente web.
La función `json_encode` se utiliza para convertir un array o un objeto de PHP a una cadena JSON. Es especialmente útil cuando necesitas enviar datos desde el servidor al cliente en un formato que el cliente puede interpretar fácilmente.
```php
$data = array(
“nombre” => “Juan”,
“edad” => 25,
“ciudad” => “Madrid“
);
$json_data = json_encode($data);
echo $json_data; // {nombre“Juan”,edad:“ciudad”:“Madrid”}
?>
```
En este ejemplo, el array `$data` se convierte en una cadena JSON que puede ser enviada, por ejemplo, a través de una API web.
La función `json_decode` convierte una cadena JSON a una variable de PHP. Es comúnmente usada para recibir y procesar datos JSON en el servidor que se han enviado desde un cliente o una API.
```php
$json_data = ‘{nombre“Juan”,edad:“ciudad”:“Madrid”}’;
$data = json_decode($json_data);
echo $data->nombre; // Juan
echo $data->edad; // 25
echo $data->ciudad; // Madrid
?>
```
En este ejemplo, la cadena JSON `$json_data` se convierte en un objeto PHP, permitiendo el acceso a sus propiedades usando la notación de flecha (`->`).
Ambas funciones `json_encode` y `json_decode` aceptan parámetros adicionales que pueden alterar su comportamiento.
- flags: Puedes pasar opciones adicionales usando constantes predefinidas como `JSON_PRETTY_PRINT` para generar JSON legible (formatos con sangría).
- depth: Establece la profundidad máxima del JSON que se desea codificar.
```php
$data = array(
“nombre” => “Juan”,
“edad” => 25,
“ciudad” => “Madrid“
);
$json_data = json_encode($data, JSON_PRETTY_PRINT);
echo $json_data;
/*
{
“nombre”: “Juan”,
“edad”: 25,
“ciudad”: “Madrid“
}
*/
?>
```
- assoc: Si se establece en `true`, el resultado será un array asociativo en lugar de un objeto.
- depth: Profundidad máxima.
- options: Opciones adicionales para el manejo de errores (por ejemplo: `JSON_BIGINT_AS_STRING`).
```php
$json_data = ‘{nombre“Juan”,edad:“ciudad”:“Madrid”}’;
$data = json_decode($json_data, true);
echo $data[‘nombre’]; // Juan
echo $data[‘edad’]; // 25
echo $data[‘ciudad’]; // Madrid
?>
```
- [PHP Documentation – json_encode](https://www.php.net/manual/en/function.json-encode.php)
- [PHP Documentation – json_decode](https://www.php.net/manual/en/function.json-decode.php)
- [Mozilla Developer Network (MDN) – JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)
Estas funciones son cruciales para trabajar con APIs y manejar datos dinámicos en aplicaciones modernas, asegurando la interoperabilidad entre distintos sistemas y tecnologías.